/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package negocio;

import controladores.SupervisorEntidadFacadeLocal;
import controladores.SupervisorXEntidadFacadeLocal;
import controladores.UsuarioFacadeLocal;
import entidades.SupervisorEntidad;
import entidades.SupervisorXEntidad;
import entidades.Usuario;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.annotation.Resource;
import javax.ejb.EJB;
import javax.ejb.EJBContext;
import javax.ejb.Stateless;
import javax.ejb.TransactionManagement;
import javax.ejb.TransactionManagementType;
import javax.transaction.HeuristicMixedException;
import javax.transaction.HeuristicRollbackException;
import javax.transaction.NotSupportedException;
import javax.transaction.RollbackException;
import javax.transaction.SystemException;
import javax.transaction.UserTransaction;

/**
 *
 * @author Angel
 */
@Stateless(mappedName = "UsuarioEJB")
@TransactionManagement(TransactionManagementType.BEAN)
public class UsuarioSrv implements UsuarioInterface {

    @Resource
    private EJBContext context;
    private UserTransaction utx;
    @EJB
    private UsuarioFacadeLocal usuarioFacadeLocal;
    @EJB
    private SupervisorEntidadFacadeLocal supervisorEntidadFacadeLocal;
    @EJB
    private SupervisorXEntidadFacadeLocal supervisorXEntidadFacadeLocal;

    @Override
    public Usuario consultarUsuario(int usuario) {
        Usuario usuariotmp = usuarioFacadeLocal.find(usuario);
        return usuariotmp;
    }

    @Override
    public Usuario validarLogin(Usuario usuario) {
        return usuarioFacadeLocal.validarLogin(usuario);
    }

    @Override
    public void crear(Usuario usuario, SupervisorEntidad supervisorEntidad, SupervisorXEntidad supervisorXEntidad) {
        System.out.println("entra al metodo crear--------------------------------");
        try{
            utx = context.getUserTransaction();
            utx.begin();
            System.out.println("------------------despues de begin");
            usuarioFacadeLocal.create(usuario);
            supervisorEntidadFacadeLocal.create(supervisorEntidad);
            supervisorXEntidadFacadeLocal.create(supervisorXEntidad);
            utx.commit();
            System.out.println("hace coommit----");
        } catch (RollbackException ex) {
                Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch (HeuristicMixedException ex) {
                Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch (HeuristicRollbackException ex) {
                Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch(NotSupportedException ex) {
            Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SecurityException ex) {
            Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalStateException ex) {
            Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SystemException ex) {
            Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        }
        
    }

    @Override
    public void actualizarClave(Usuario usuario) {
        try{
            utx = context.getUserTransaction();
            utx.begin();
            System.out.println("------------entra al metodo de actualizar clave");
            usuarioFacadeLocal.edit(usuario);
            
            utx.commit();
            System.out.println("hace coommit----");
        } catch (RollbackException ex) {
                Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch (HeuristicMixedException ex) {
                Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch (HeuristicRollbackException ex) {
                Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch(NotSupportedException ex) {
            Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SecurityException ex) {
            Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch (IllegalStateException ex) {
            Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        } catch (SystemException ex) {
            Logger.getLogger(UsuarioSrv.class.getName()).log(Level.SEVERE, null, ex);
        }
    }
    
    
}
